package server;

import java.awt.Point;
import java.awt.geom.Ellipse2D;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

import com.example.emoteme.Cara;

public class EmoteServer {

	Scanner scan = new Scanner(System.in);
	private ServerSocket skServer;
	private Socket skCliente;
	Object caraEnviar;
	final int PUERTO = 9999;
	String IP_CLIENTE;
	Cara nuevaCara = new Cara();
	float gradosCejaIzq = 0;
	float gradosCejaDer = 0;
	float gradosBoca = 0;
	int tamBoca = 0;
	int estadoBoca = 0;
	float aperturaBoca = 0;
	Point posOjoIzq = new Point(0, 0);
	Point posOjoDer = new Point(0, 0);
	int separacionCejas = 140;
	int tamCeja = 80;
	Ellipse2D.Double ojoIzq = new Ellipse2D.Double((800 / 2) - separacionCejas,
			(480 / 2) - 95, tamCeja, 35);
	Ellipse2D.Double ojoDer = new Ellipse2D.Double((800 / 2) + separacionCejas
			- tamCeja, (480 / 2) - 95, tamCeja, 35);

	
	public void enviar()throws IOException {
		skCliente = new Socket("192.168.1.59",9999);
		ObjectOutputStream cara = new ObjectOutputStream(
				skCliente.getOutputStream());
		String json = "{" +
				"\"cara\": [" +
				
		        "{" +
		                "\"gradoCejaIzq\": \"-45\"," +
		                "\"gradoCejaDer\": \"-45\"," +
		                "\"gradoBoca\": \"0\"," +
		                "\"aperturaBoca\": \"20\"," +
		                "\"tamBoca\": \"50\"," +
		                "\"estadoBoca\": \"-1\"," +
		                "\"posOjoIzqX\": \"5\"," +
		                "\"posOjoIzqY\": \"10\"," +
		                "\"posOjoDerX\": \"5\"," +
		                "\"posOjoDerY\": \"3\"" +
		                
		        "}"+
		        
		        
		        			"]"+
		        			
		"}";
		cara.writeObject(json);
		cara.flush();
		cara.reset();
		
		System.out.println("\n--->Objeto enviado.");
	}
	EmoteServer() {
		System.out.println("SERVER EMPEZADO-----");
		try {
			enviar();
			//while (true) {
//					posOjoIzq.x = 1000;
//					posOjoIzq.y = 100;
//					posOjoDer.x = 1000;
//					posOjoDer.y = 100;
//					while (!isInCircle(posOjoIzq, posOjoDer)) {
//						System.out.print("\nInserte pos OjoIzq(X {("
//								+ ((800 / 2) - separacionCejas) + "-"
//								+ ((800 / 2) - separacionCejas + tamCeja)
//								+ ")}:");
//						posOjoIzq.x = scan.nextInt();
//						System.out.print(" (Y {(" + ((480 / 2) - 95) + "-"
//								+ ((480 / 2) - 95 + 35) + ")}):");
//						posOjoIzq.y = scan.nextInt();
//						System.out.print("\nInserte pos OjoDer(X {("
//								+ ((800 / 2) + separacionCejas - tamCeja) + "-"
//								+ ((800 / 2) + separacionCejas) + ")}:");
//						posOjoDer.x = scan.nextInt();
//						System.out.print(" (Y {(" + ((480 / 2) - 95) + "-"
//								+ ((480 / 2) - 95 + 35) + ")}):");
//						posOjoDer.y = scan.nextInt();
//					}
//					System.out.print("\nInserte grados cejaDer:");
//					gradosCejaDer = scan.nextFloat();
//					System.out.print("\nInserte grados cejaIzq:");
//					gradosCejaIzq = scan.nextFloat();
//					System.out.print("\nInserte grados boca:");
//					gradosBoca = scan.nextFloat();
//					System.out.print("\nInserte aperturaBoca:");
//					aperturaBoca = scan.nextFloat();
//					System.out.print("\nInserte tamBoca:");
//					tamBoca = scan.nextInt();
//					System.out.print("\nInserte estadoBoca (-1,1,0):");
//					estadoBoca = scan.nextInt();
//					nuevaCara.setParams(gradosCejaIzq, gradosCejaDer,
//							gradosBoca, aperturaBoca, tamBoca, estadoBoca);
//					nuevaCara.setPosOjoDerX(posOjoDer.x);
//					nuevaCara.setPosOjoDerY(posOjoDer.y);
//					nuevaCara.setPosOjoIzqX(posOjoIzq.x);
//					nuevaCara.setPosOjoIzqY(posOjoIzq.y);
//					caraEnviar = nuevaCara;
//					cara.writeObject(caraEnviar);
				
			
			//	cara.flush();
			//	cara.reset();
			//}
		} catch (Exception e) {
			
			e.printStackTrace();
		}
	}

	private boolean isInCircle(Point izq, Point der) {

		if (ojoIzq.contains(300 + izq.x, 162 + izq.y)
				&& ojoDer.contains(500 + der.x, 162 + der.y)) {
			return true;
		} else {
			return false;
		}
	}

	public static void main(String[] args) {
		new EmoteServer();
	}
}
